import java.io.*;
import java.util.Scanner;

//复制一个文件,同时必须要进行合法性判定!
//输入一个路径 表示要被复制的文件
//输入另一个路径,表示要复制到的目标目录
public class Demo1 {
    public static void main(String[] args) {
        //1.输入必要的信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要复制的文件路径: ");
        String srcPath = scanner.next();
        System.out.println("请输入要复制到的目标路径: ");//这个路径最后是要给复制的文件命名,所以要检查名字的上一级是否存在
        String destPath = scanner.next();

        //2.验证上述路径是否合法
        File srcFile = new File(srcPath);
        if(!srcFile.isFile()){
            //输入文件不合法
            System.out.println("输入的要复制的文件路径不合法!");
            return;
        }
        File destFile = new File(destPath);
        if(!destFile.getParentFile().isDirectory()){
            //判定上级目录是否存在
            System.out.println("输入的要复制到的目标路径非法!");
            return;
        }

        //3.读写文件
        try(InputStream inputStream = new FileInputStream(srcFile);
            OutputStream outputStream = new FileOutputStream(destFile)) {
            //如果文件不存在,就创建一个文件   try 的()里面可以写多个对象
            while (true){
                byte[] bytes = new byte[1024];
                int n =inputStream.read(bytes);
                if(n==-1){
                    break;
                }
                outputStream.write(bytes,0,n);//防止多写
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}
